﻿using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Text;
using System.Linq;
using System.Windows.Forms;

namespace Siav
{
    public partial class frmPedidosBaixados : Siav.BaseBuscas
    {
        public frmPedidosBaixados()
        {
            InitializeComponent();
        }

        SiavEntities Entidades = new SiavEntities();
        public string CodigoSelecionado = "-1";
        public string FormClientes = "";
        private IEnumerable<PedidoCabeca> Selecao;

        public string Tipo(string pParametros)
        {
            string Retorno = "";
            switch (pParametros)
            {
                case "PP":
                    Retorno = "P";
                    break;
                case "PF":
                    Retorno = "F";
                    break;
                case "PO":
                    Retorno = "O";
                    break;
                case "":
                    Retorno = "";
                    break;
                case "PE":
                    Retorno = "E";
                    break;
            }
            return Retorno;
        }
        public void BuscarPedidos(string pParametro)
        {
            lstResultados.Items.Clear();
            try
            {
                // string Retorno = "";
                //string ValorB = "";
                pProgress.Value = 5;
                var SPedido = (from pe in Entidades.PedidoCabeca
                               where pe.Clientes.NomeFantasia.Contains(pParametro) || pe.Clientes.RazaoSocial.Contains(pParametro) || pe.Clientes.CPF_CNPJ.Contains(pParametro) || pe.Clientes.Telefone.Contains(pParametro)
                               orderby pe.CodigoPedido descending
                               select pe).ToList();
                Selecao = SPedido.Where(P => P.Status == "F");
                                pProgress.Value = 50;

                foreach (PedidoCabeca Ped in Selecao)
                {
                    string RetornoNFE;

                    ListViewItem item = new ListViewItem();
                   
                    if (Ped.ChaveNFe == null)
                    {
                        RetornoNFE = "NÃO";
                    }
                    else
                    {
                        RetornoNFE = "SIM";
                    }
                    item.Text = Ped.CodigoPedido.ToString();
                    item.SubItems.Add(Ped.DataEntrega.ToShortDateString());
                    item.SubItems.Add(Ped.Clientes.NomeFantasia + " " + Ped.Clientes.RazaoSocial);
                    item.SubItems.Add(Ped.Clientes.CPF_CNPJ);
                    if (RetornoNFE == "SIM")
                    {
                        item.BackColor = Color.DarkOrange;
                    }
                    item.SubItems.Add(RetornoNFE);
                    lstResultados.Items.Add(item);
                }
                pProgress.Value = 100;
            }
            catch
            {

            }


        }

        private void frmPedidosBaixados_Load(object sender, EventArgs e)
        {
            BuscarPedidos(txtParametro.Text);
        }

        private void txtParametro_TextChanged(object sender, EventArgs e)
        {
            if (txtParametro.TextLength > 1)
            {
                BuscarPedidos(txtParametro.Text);
            }
        }

        private void btnEntregar_Click(object sender, EventArgs e)
        {
            if (MessageBox.Show("Tem certeza que deseja mudar o status desse pedido para Entregue?", "Confirmação", MessageBoxButtons.YesNo, MessageBoxIcon.Question) == DialogResult.Yes)
            {
                try
                {
                    int Pedido = int.Parse(lstResultados.SelectedItems[0].Text);
                    var Opedido = (from p in Entidades.PedidoCabeca
                                   where p.CodigoPedido == Pedido
                                   select p).FirstOrDefault();
                    Opedido.Status = "E";
                    Opedido.Entregue = DateTime.Now;
                    Entidades.ObjectStateManager.ChangeObjectState(Opedido, EntityState.Modified);
                    Entidades.SaveChanges();
                    MessageBox.Show("Pedido entregue com sucesso", "Informação", MessageBoxButtons.OK, MessageBoxIcon.Information);
                }

                catch
                {
                    MessageBox.Show("Selecione um pedido da lista primeiro", "Erro", MessageBoxButtons.OK, MessageBoxIcon.Error);
                }
            }
        }

        private void lstResultados_SelectedIndexChanged(object sender, EventArgs e)
        {
            try
            {
                if (lstResultados.SelectedItems[0].SubItems[4].Text != "SIM")
                {
                    //btnEmitirNota.Enabled = true;
                }
                else
                {
                    //btnEmitirNota.Enabled = false;
                }
            }
            catch
            {
            	
            }


        }

        private void btnEmitirNota_Click(object sender, EventArgs e)
        {
            try
            {
                if (lstResultados.SelectedItems[0].Text != null)
                {
                    frmEmiteNFe NFe = new frmEmiteNFe();
                    NFe.CodigoPedido = lstResultados.SelectedItems[0].Text;
                    NFe.ShowDialog();
                    NFe = null;                    
                    GC.Collect();
                    //AppDomain.Unload();
                }
            }
            catch 
            {
                MessageBox.Show("Selecione um pedido da lista primeiro", "Erro", MessageBoxButtons.OK, MessageBoxIcon.Error);
            }

            
           
        }

        private void btnImprimirFicha_Click(object sender, EventArgs e)
        {
            try
            {
                int CodigoPedido = int.Parse(lstResultados.SelectedItems[0].Text);
                frmFichaPedido ficha = new frmFichaPedido();
                ficha.CodigoPedido = CodigoPedido;
                ficha.ShowDialog();
                ficha.Dispose();
            }
            catch
            {
                MessageBox.Show("Primeiro selecione o pedido na lista", "Erro", MessageBoxButtons.OK, MessageBoxIcon.Error);             
            }
        }

        private void btnObservacoes_Click(object sender, EventArgs e)
        {
            try
            {
                Validacoes.NumeroPedido = int.Parse(lstResultados.SelectedItems[0].Text);
                using (frmObsPedido Obs = new frmObsPedido())
                {
                    Obs.ShowDialog();
                    Obs.Dispose();
                }
            }
            catch
            {

            }
        }

        private void btnImprimirRelatorio_Click(object sender, EventArgs e)
        {
            using (frmImprimePedidosProntos Prontos = new frmImprimePedidosProntos())
            {
                Prontos.ShowDialog();
                Prontos.Dispose();
            }
        }


    }
}
